
class ResponsavelController {

    String controlador;

    def index = { }

    /*
     * Closure que grava o registro.
     */
    def save   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;

        //carrega os atributos de formacao e recebe os dados
        def responsavelInstance = new Responsavel(params);
        //grava os dados, seta a sessão usuário e redireciona para a tela de edição de cadastro
        if (responsavelInstance.save(flush: true)) {
            flash.message = "Responsável cadastrado com sucesso.";
            redirect(controller: controlador, action: "edit", id:params.colaborador.id);
        }else {
            flash.message = "Não foi possível cadastrar o responsável.";
            redirect(controller: controlador, action: "edit", id:params.colaborador.id, model: [responsavelInstance: responsavelInstance]);
        }
    };

    /*
     * Closure que grava as alterações no registro.
     */
    def update   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;

        //carrega os atributos de formacao e recebe os dados
        def responsavelInstance = Responsavel.get(params.id);
        responsavelInstance.properties = params;
        //grava os dados, seta a sessão usuário e redireciona para a tela de edição de cadastro
        if (responsavelInstance.save(flush: true)) {
            flash.message = "Responsável alterado com sucesso.";
            redirect(controller: controlador, action: "edit", id:params.colaborador.id);
        }else {
            flash.message = "Não foi possível alterar o responsável.";
            redirect(controller: controlador, action: "edit", id:params.colaborador.id, model: [responsavelInstance: responsavelInstance]);
        }
    };


    /*
     * Closure que carrega os dados para tela de edição de cadastro.
     */
    def edit   = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;
        def responsavelInstance     = Responsavel.findById(params.id);
        // Se o existe retorna os dados.
        if (responsavelInstance){
            redirect(controller: controlador, action: "edit", id:params.colaborador.id, params:[responsavel: responsavelInstance]);
        }else {
            flash.message = "Responsável não encontrado.";
            redirect(controller: controlador, action: "edit", id:params.colaborador.id);
        }
    };



    /*
     * Closure que exclui os registros.
     */
    def delete = {
        if(!verificaLogon()){
            return;
        }
        controlador = params.tipo;
        // Carrega os dados.
        def responsavelInstance = Responsavel.findById(params.id)
        // Exclui o registro.
        def colaboradorInstance = Colaborador.findById(responsavelInstance.colaborador.id)

        responsavelInstance.delete();
        flash.message = "Responsável excluido com sucesso.";
        redirect(controller: controlador, action: "edit", id:colaboradorInstance.id);
    };

    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
